Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Δεν διαβάζει το standard output του service που φτιαχνω....

Îåêßíçóå áðü ôï ìÝëïò padavrexi. Τελευταία δημοσίευση από το μέλος George J. Capnias στις 01-08-2006, 22:42. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  01-08-2006, 11:43 15361

    Δεν διαβάζει το standard output του service που φτιαχνω....

    Καταρχήν, αλό! και καλώς σας βρήκα...

    Δουλεύω σε XP + VS.NET 2005.
    Προσπαθώ να φτιάξω ένα windows service που να καλεί ένα εξωτερικό πρόγραμμα κάθε 2 secs και να διαχειρίζεται μετά το output αυτού.
    Το πρόβλημα που αντιμετωπίζω είναι το εξής: Όταν αρχικά δοκίμασα να φτιάξω το προαναφερθέν service ως Console Application, όλα δούλευαν ρολόι!
    Μετατρέποντας το σε service, αντιμετωπίζω διάφορα προβλήματα με το standard output - τουλάχιστον εκεί νομίζω ότι εντοπίζεται το πρόβλημα...
    Στην εντολή s = snmpget.StandardOutput.ReadLine του παρακάτω κώδικα, έχω ξεκαθαρίσει πως πράγματι γίνεται ανάθεση τιμής στο s αλλά το περιεχόμενο του είναι κενό!

    Ο κώδικας που προσπαθώ να "παίξω" είναι ο παρακάτω:

    Στο OnStart

    Dim snmpget As Process = New Process()
    With snmpget.StartInfo
        .FileName = "C:\SNMP\bin\snmpget.exe"
        .WindowStyle = ProcessWindowStyle.Hidden
        .UseShellExecute = False
        .CreateNoWindow = True
        .RedirectStandardOutput = True
        .Arguments = "-v " & snmpVersion & " -c " & snmpCommunity & " " & snmpAgent & " " & snmpOID
    End With

    t = New Timer(2000)
    AddHandler t.Elapsed, AddressOf timerFired
    With t
        .AutoReset = True
        .Enabled = True
        .Start()
    End With


    Στο timerFired

    Dim s As String
    Dim sOutput as StreamWriter
    snmpget.Start()
    sOutput = snmpget.StandardOutput
    s = sOutput.ReadLine
    snmpget.WaitForExit()
    snmpget.Close()




    Καμία ιδέα τι μπορεί να φταίει;;;

    ΘενQ!!
  •  01-08-2006, 22:42 15388 σε απάντηση της 15361

    Απ: Δεν διαβάζει το standard output του service που φτιαχνω....

    Διαβάζοντας το post, το πρώτο που μου πέρασε από το μυαλό, είναι το ασυμβίβαστο που προσπαθείς να κάνεις: Από ορισμού τα windows services είναι προγράμματα που δεν επικοινωνούν με το user interface και δεν έχουν standard input και standard output, εκτός και αν τα κάνεις user interface interactive αφού τα δηλώσεις - αλλά σχεδόν κανένα service δεν είναι για ευνόητους λόγους. Standard input και output έχουν τα κανονικά προγράμματα. Αυτός είναι πιθανώς ο λόγος που δουλεύει σαν Windows Console εφαρμογή και όχι σαν Windows Service.

    Πιστεύω ότι θα ήταν καλύτερα να χρησιμοποιήσεις ένα άλλου τύπου Stream για τον ίδιο σκοπό... Ένα NetworkStream θα είναι πιο κατάλληλο στην δική σου περίπτωση...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems